import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;

/**
 * Esta es la clase usuario, el jugador que representa al usuario.
 * @author Miguel Martinez Aguilar
 * @version 04 de abril de 2013
 */
public class Usuario extends Jugador
{
    // Declaracion de variables de instancia
    private Aespacio apunt;// es el apuntador a espacios del usuario.
    
    /**
     * Este es el constructor de Usuario.
     * @param nombre: el nombre del usuario.
     */
    public Usuario(String nombre) 
    {
        super(nombre);
        numjug = 0;
    }
    
    /**
     * Este metodo permite al usuario jugar.
     */
    public void act() 
    {
        if(turno){
            if(!lanz.lanzamiento())apunt.activar();
            else{
                if(lanz.lanzamiento()){
                    if(lanz.impacto()){
                        if(lanz.hayBarco()){
                            this.continuaTurno(false);
                        }
                        else super.terminaTurno();
                    }
                }
            }
        }
    }
    
    /**
     * Este metodo prepara al jugador para el juego.
     * @param lanz: el lanzador que requerira el usuario.
     * @param creador: el objeto CreaFlota que sera el encargado de crear y poner los barcos en el escenario.
     * @param fx: coordenada (x) para colocar al objeto CreaFlota.
     * @param fy: coordenada (y) para colocar al objeto CreaFlota.
     */
    public void preparar(Lanzador lanz, CreaFlota creador, int fx, int fy)
    {
        this.lanz = lanz;
        this.agregaArmeria(lanz,fx,true);
        this.apunt = new Aespacio(armeria);
        ScrollWorld mundo = super.getWorld();
        this.pintaNombre();
        this.agregaObj(apunt,350,250);
        mundo.addObject(creador,fx,fy);
        CreaFlota_menu nuevo = new CreaFlota_menu(creador);
        mundo.addObject(nuevo,350,250);
        nuevo.preparar();
    }
    
    /**
     * Este metodo retorna true, que indicaque los barcos estaran ocultos.
     */
    public boolean barcosOcultos()
    {
        return false;
    }
    
    /**
     * Este metodo no realiza tiros aleatorios.
     */
    public void tiroAleatorio()
    {
    }
}